home *** CD-ROM | disk | FTP | other *** search
/ Borland JBuilder 6 / jbuilder6.iso / IBM VisualAge for Java Enterprise v4.0 Retail / ivj40 / setup / IDE.Cab / F76746_BasicToolBarButtonUI.class (.txt) < prev    next >
Encoding:
Java Class File  |  2000-04-25  |  6.5 KB  |  227 lines

  1. package com.ibm.ivb.jface.basic;
  2.  
  3. import com.ibm.ivb.jface.parts.ToolBarButton;
  4. import com.ibm.ivb.jface.plaf.ToolBarButtonUI;
  5. import com.ibm.ivb.jface.util.ImageUtil;
  6. import java.awt.Color;
  7. import java.awt.Component;
  8. import java.awt.Dimension;
  9. import java.awt.Font;
  10. import java.awt.FontMetrics;
  11. import java.awt.Graphics;
  12. import java.awt.Image;
  13. import java.awt.Insets;
  14. import java.awt.Rectangle;
  15. import javax.swing.AbstractButton;
  16. import javax.swing.ButtonModel;
  17. import javax.swing.Icon;
  18. import javax.swing.ImageIcon;
  19. import javax.swing.JComponent;
  20. import javax.swing.SwingUtilities;
  21. import javax.swing.border.Border;
  22. import javax.swing.plaf.ComponentUI;
  23. import javax.swing.plaf.basic.BasicButtonUI;
  24.  
  25. public class BasicToolBarButtonUI extends ToolBarButtonUI {
  26.    private static final String kCBIBMCopyright = "(c) Copyright IBM Corporation 1998";
  27.    protected static int borderShiftX;
  28.    protected static int borderShiftY;
  29.    protected static BasicToolBarButtonUI tbuttonUI;
  30.    protected static Border savedBorder = null;
  31.    protected int textHorizontalMargin = 3;
  32.    protected int iconShiftX;
  33.    protected int iconShiftY;
  34.    protected static Image borderUp;
  35.    protected static Image borderDown;
  36.    protected static Icon iborderUp;
  37.    protected static Icon iborderDown;
  38.    protected static boolean imagesLoaded;
  39.    protected static boolean filtered;
  40.    // $FF: synthetic field
  41.    static Class class$com$ibm$ivb$jface$basic$BasicToolBarButtonUI;
  42.  
  43.    public static ComponentUI createUI(JComponent var0) {
  44.       if (tbuttonUI == null) {
  45.          tbuttonUI = new BasicToolBarButtonUI();
  46.          borderShiftX = 1;
  47.          borderShiftY = 1;
  48.       }
  49.  
  50.       return tbuttonUI;
  51.    }
  52.  
  53.    public Dimension getMaximumSize(JComponent var1) {
  54.       return this.getPreferredSize(var1);
  55.    }
  56.  
  57.    public Dimension getMinimumSize(JComponent var1) {
  58.       return this.getPreferredSize(var1);
  59.    }
  60.  
  61.    public Dimension getPreferredSize(JComponent var1) {
  62.       ToolBarButton var2 = (ToolBarButton)var1;
  63.       String var3 = ((AbstractButton)var2).getText();
  64.       Insets var4 = ((JComponent)var2).getInsets();
  65.       if (var3 == null) {
  66.          return new Dimension(iborderUp.getIconWidth() + var4.left + var4.right, iborderUp.getIconHeight() + var4.top + var4.bottom);
  67.       } else {
  68.          Icon var5 = ((AbstractButton)var2).getIcon();
  69.          Font var6 = ((Component)var2).getFont();
  70.          FontMetrics var7 = ((Component)var1).getFontMetrics(var6);
  71.          Rectangle var8 = new Rectangle();
  72.          Rectangle var9 = new Rectangle();
  73.          Rectangle var10 = new Rectangle(32767, 32767);
  74.          Icon var11 = ((AbstractButton)var2).getIcon() != null ? iborderUp : null;
  75.          SwingUtilities.layoutCompoundLabel(var7, var3, var11, ((AbstractButton)var2).getVerticalAlignment(), ((AbstractButton)var2).getHorizontalAlignment(), ((AbstractButton)var2).getVerticalTextPosition(), ((AbstractButton)var2).getHorizontalTextPosition(), var10, var8, var9, 0);
  76.          Rectangle var12 = var8.union(var9);
  77.          var12.width += var4.left + var4.right + this.textHorizontalMargin + this.textHorizontalMargin;
  78.          var12.height += var4.top + var4.bottom;
  79.          if (var5 == null) {
  80.             var12.width += 4;
  81.             var12.height += 4;
  82.          }
  83.  
  84.          return var12.getSize();
  85.       }
  86.    }
  87.  
  88.    public void installUI(JComponent var1) {
  89.       super.installUI(var1);
  90.       ToolBarButton var2 = (ToolBarButton)var1;
  91.       savedBorder = var1.getBorder();
  92.       ((JComponent)var2).setBorder((Border)null);
  93.       this.iconShiftX = -1;
  94.       this.iconShiftY = -1;
  95.       super.defaultTextShiftOffset = 1;
  96.       ((AbstractButton)var2).setBorderPainted(false);
  97.       super.defaultTextShiftOffset = 1;
  98.       if (!imagesLoaded) {
  99.          this.loadImages(true, var1);
  100.          iborderUp = new ImageIcon(borderUp);
  101.          iborderDown = new ImageIcon(borderDown);
  102.       }
  103.  
  104.    }
  105.  
  106.    protected boolean isRolloverSupported() {
  107.       return true;
  108.    }
  109.  
  110.    protected void loadImages(boolean var1, JComponent var2) {
  111.       if (var1) {
  112.          ImageUtil.setRelativeClass(class$com$ibm$ivb$jface$basic$BasicToolBarButtonUI != null ? class$com$ibm$ivb$jface$basic$BasicToolBarButtonUI : (class$com$ibm$ivb$jface$basic$BasicToolBarButtonUI = class$("com.ibm.ivb.jface.basic.BasicToolBarButtonUI")));
  113.          borderUp = ImageUtil.loadImage("images/e_mon_but_up.gif");
  114.          borderDown = ImageUtil.loadImage("images/e_mon_but_dn.gif");
  115.          Color var3 = ((Component)var2).getBackground();
  116.          if (ImageUtil.isFilteringNeeded(var3)) {
  117.             borderUp = ImageUtil.filterImage(borderUp, var3);
  118.             borderDown = ImageUtil.filterImage(borderDown, var3);
  119.             filtered = true;
  120.          }
  121.  
  122.          imagesLoaded = true;
  123.       } else {
  124.          borderUp = null;
  125.          borderDown = null;
  126.          imagesLoaded = false;
  127.       }
  128.    }
  129.  
  130.    public void paint(Graphics var1, JComponent var2) {
  131.       ToolBarButton var3 = (ToolBarButton)var2;
  132.       Dimension var4 = ((Component)var3).getSize();
  133.       ButtonModel var5 = ((AbstractButton)var3).getModel();
  134.       boolean var6 = var5.isArmed() && var5.isPressed();
  135.       int var7 = var3.getBorderMode();
  136.       Icon var8 = var6 ? iborderDown : iborderUp;
  137.       Rectangle var9 = new Rectangle(var4);
  138.       Insets var10 = var2.getInsets();
  139.       var9.x += var10.left;
  140.       var9.y += var10.top;
  141.       var9.width -= var10.right + var9.x;
  142.       var9.height -= var10.bottom + var9.y;
  143.       Rectangle var11 = new Rectangle();
  144.       Rectangle var12 = new Rectangle();
  145.       Font var13 = ((Component)var2).getFont();
  146.       var1.setFont(var13);
  147.       FontMetrics var14 = var1.getFontMetrics();
  148.       String var15 = ((AbstractButton)var3).getText();
  149.       if (((AbstractButton)var3).getIcon() == null) {
  150.          var8 = null;
  151.       }
  152.  
  153.       if (var15 != null) {
  154.          var9.width -= this.textHorizontalMargin + this.textHorizontalMargin;
  155.          var15 = SwingUtilities.layoutCompoundLabel(var14, var15, var8, ((AbstractButton)var3).getVerticalAlignment(), ((AbstractButton)var3).getHorizontalAlignment(), ((AbstractButton)var3).getVerticalTextPosition(), ((AbstractButton)var3).getHorizontalTextPosition(), var9, var11, var12, 0);
  156.       } else {
  157.          var11.width = var8.getIconWidth();
  158.          var11.height = var8.getIconHeight();
  159.          var11.x = var4.width / 2 - var11.width / 2;
  160.          var11.y = var4.height / 2 - var11.height / 2;
  161.       }
  162.  
  163.       if (var6 && ((AbstractButton)var3).getIcon() == null && ((AbstractButton)var3).getText() != null) {
  164.          ((BasicButtonUI)this).setTextShiftOffset();
  165.       } else {
  166.          ((BasicButtonUI)this).clearTextShiftOffset();
  167.       }
  168.  
  169.       if (var7 == 3 || !this.isRolloverSupported() || var7 == 2 && var5.isRollover()) {
  170.          if (var8 != null) {
  171.             var8.paintIcon(var2, var1, var11.x, var11.y);
  172.          } else {
  173.             var1.setColor(((Component)var2).getBackground());
  174.             var1.draw3DRect(var9.x, var9.y, var9.width - 1, var9.height - 1, !var6);
  175.          }
  176.       }
  177.  
  178.       if (var15 != null) {
  179.          ((BasicButtonUI)this).paintText(var1, var3, var12, var15);
  180.       }
  181.  
  182.       ((BasicButtonUI)this).clearTextShiftOffset();
  183.       if (((AbstractButton)var3).getIcon() != null) {
  184.          this.paintIcon(var1, var3, var11);
  185.       }
  186.  
  187.    }
  188.  
  189.    protected void paintIcon(Graphics var1, ToolBarButton var2, Rectangle var3) {
  190.       Icon var4 = ((AbstractButton)var2).getIcon();
  191.       if (var4 != null) {
  192.          Rectangle var5 = new Rectangle();
  193.          ButtonModel var6 = ((AbstractButton)var2).getModel();
  194.          int var7 = var6.isArmed() && var6.isPressed() ? 1 : 0;
  195.          var5.width = var4.getIconWidth();
  196.          var5.height = var4.getIconHeight();
  197.          var5.x = var3.x + var3.width / 2 - var5.width / 2 + var7 + this.iconShiftX;
  198.          var5.y = var3.y + var3.height / 2 - var5.height / 2 + var7 + this.iconShiftY;
  199.          super.paintIcon(var1, var2, var5);
  200.       }
  201.  
  202.    }
  203.  
  204.    public void uninstallUI(JComponent var1) {
  205.       super.uninstallUI(var1);
  206.       if (savedBorder != null) {
  207.          var1.setBorder(savedBorder);
  208.       }
  209.  
  210.       if (imagesLoaded) {
  211.          this.loadImages(false, var1);
  212.       }
  213.  
  214.       iborderUp = null;
  215.       iborderDown = null;
  216.    }
  217.  
  218.    // $FF: synthetic method
  219.    static Class class$(String var0) {
  220.       try {
  221.          return Class.forName(var0);
  222.       } catch (ClassNotFoundException var2) {
  223.          throw new NoClassDefFoundError(((Throwable)var2).getMessage());
  224.       }
  225.    }
  226. }
  227.